package sia.erp.venta_ruta;

import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.concurrent.ExecutionException;

import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;

import sia.erp.connections.WebServiceClient;
import sia.erp.connections.WebServiceExecute;
import sia.erp.model.Articulo;
import android.content.Context;

public class Utils {

	public static String nombre_empresa;
	public static boolean isConnected;


	public static synchronized List<Articulo> consultarInventarios(Context context) throws InterruptedException, ExecutionException{
		WebServiceClient service = new WebServiceClient();
		SoapObject response;
		List<Articulo> responseList = new ArrayList<Articulo>();

		PropertyInfo empresa = new PropertyInfo();
		empresa.setName("nombre_empresa");
		empresa.setValue(nombre_empresa);
		empresa.setType(String.class);

		service.execute("Obtener_Articulos_Bodega",context, empresa);
		response = service.get();

		for(int i = 0; i < response.getPropertyCount(); i++){
			StringTokenizer tokenizer = new StringTokenizer(response.getPropertyAsString(0), ";");
			Articulo nuevoArticulo = new Articulo(tokenizer.nextToken(),
					tokenizer.nextToken(), 
					Float.parseFloat(tokenizer.nextToken()), 
					Float.parseFloat(tokenizer.nextToken()),
					Float.parseFloat(tokenizer.nextToken()),
					Float.parseFloat(tokenizer.nextToken()),
					Float.parseFloat(tokenizer.nextToken()),
					tokenizer.nextToken(),
					tokenizer.nextToken());
			responseList.add(nuevoArticulo);
		}

		return responseList;
	}

	public static synchronized List<String> consultar(Context context, int tipo) throws InterruptedException, ExecutionException{
		WebServiceClient service = new WebServiceClient();
		SoapObject response;
		List<String> responseList = new ArrayList<String>();

		PropertyInfo empresa = new PropertyInfo();
		empresa.setName("nombre_empresa");
		empresa.setValue(nombre_empresa);
		empresa.setType(String.class);

		PropertyInfo tipoConsulta = new PropertyInfo();
		tipoConsulta.setName("tipo");
		tipoConsulta.setValue(tipo);
		tipoConsulta.setType(int.class);

		service.execute("ConsultarEmpresa", context, tipoConsulta, empresa);
		response = service.get();

		for(int i = 0; i < response.getPropertyCount(); i++){
			responseList.add(response.getPropertyAsString(0));
		}

		return responseList;
	}

	public static synchronized List<String> ConsultarEmpresaCliente(Context context, String client, String articulo, int tipo) throws InterruptedException, ExecutionException{
		WebServiceClient service = new WebServiceClient();
		SoapObject response;
		List<String> responseList = new ArrayList<String>();
		
		PropertyInfo tipoConsulta = new PropertyInfo();
		tipoConsulta.setName("tipo");
		tipoConsulta.setValue(tipo);
		tipoConsulta.setType(int.class);

		PropertyInfo empresa = new PropertyInfo();
		empresa.setName("nombre_empresa");
		empresa.setValue(nombre_empresa);
		empresa.setType(String.class);

		PropertyInfo clienteparam = new PropertyInfo();
		clienteparam.setName("articulo");
		clienteparam.setValue(articulo);
		clienteparam.setType(String.class);
		
		PropertyInfo articuloparam = new PropertyInfo();
		articuloparam.setName("cliente");
		articuloparam.setValue(client);
		articuloparam.setType(String.class);
		
		

		service.execute("ConsultarEmpresaCliente", context, tipoConsulta, empresa, clienteparam, articuloparam);
		response = service.get();

		for(int i = 0; i < response.getPropertyCount(); i++){
			responseList.add(response.getPropertyAsString(i));
		}

		return responseList;
	}
	
	public static synchronized void CrearDocumento(Context context, String client, String fecha, String descrip, Double totalantesimpuesto,
			Double montoImpuesto, Double ptotal) throws InterruptedException, ExecutionException{
		WebServiceExecute service = new WebServiceExecute();
		PropertyInfo nombre_socio = new PropertyInfo();
		nombre_socio.setName("nombre_socio");
		nombre_socio.setValue(client);
		nombre_socio.setType(String.class);
		
		PropertyInfo fecha_contabilizacion = new PropertyInfo();
		fecha_contabilizacion.setName("fecha_contabilizacion");
		fecha_contabilizacion.setValue(fecha);
		fecha_contabilizacion.setType(String.class);
		
		PropertyInfo fecha_entrega = new PropertyInfo();
		fecha_entrega.setName("fecha_entrega");
		fecha_entrega.setValue(fecha);
		fecha_entrega.setType(String.class);
		
		PropertyInfo total_antesimpuesto = new PropertyInfo();
		total_antesimpuesto.setName("total_antesimpuesto");
		total_antesimpuesto.setValue(totalantesimpuesto);
		total_antesimpuesto.setType(Double.class);
		
		PropertyInfo monto_impuesto = new PropertyInfo();
		monto_impuesto.setName("monto_impuesto");
		monto_impuesto.setValue(montoImpuesto);
		monto_impuesto.setType(Double.class);
		
		PropertyInfo total = new PropertyInfo();
		total.setName("total");
		total.setValue(ptotal);
		total.setType(Double.class);
		
		PropertyInfo descripcion = new PropertyInfo();
		descripcion.setName("descripcion");
		descripcion.setValue(descrip);
		descripcion.setType(String.class);
		
		PropertyInfo tipo_documento = new PropertyInfo();
		tipo_documento.setName("tipo_documento");
		tipo_documento.setValue("Orden de Venta");
		tipo_documento.setType(String.class);
		
		PropertyInfo ref_otrodocumento = new PropertyInfo();
		ref_otrodocumento.setName("ref_otrodocumento");
		ref_otrodocumento.setValue("");
		ref_otrodocumento.setType(String.class);
		
		PropertyInfo empresa = new PropertyInfo();
		empresa.setName("nombre_empresa");
		empresa.setValue(nombre_empresa);
		empresa.setType(String.class);
		
		service.execute("Crear_Documento", context, nombre_socio, fecha_contabilizacion, fecha_entrega, total_antesimpuesto, monto_impuesto,
				total, descripcion, tipo_documento, ref_otrodocumento, empresa);
		
		
	}
	
	public static synchronized void AgregarFila(Context context, String fila) throws InterruptedException, ExecutionException{
		WebServiceExecute service = new WebServiceExecute();
		PropertyInfo FilaDocumento = new PropertyInfo();
		FilaDocumento.setName("FilaDocumento");
		FilaDocumento.setValue(fila);
		FilaDocumento.setType(String.class);
		
		PropertyInfo empresa = new PropertyInfo();
		empresa.setName("nombre_empresa");
		empresa.setValue(nombre_empresa);
		empresa.setType(String.class);
		
		service.execute("Agregar_FilaDocumento", context, FilaDocumento, empresa);
		
	}

}
